/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package compilador.analisadorSintatico.operacoes;

import compilador.analisadorLexico.Token;
import compilador.analisadorLexico.TokenClass;
import compilador.analisadorSintatico.Producao;
import compilador.analisadorSintatico.TokenReader;
import compilador.analisadorSintatico.simboloGramatical.NaoTerminal;
import compilador.analisadorSintatico.simboloGramatical.SimboloGramatical;

/**
 *
 * @author Joao Luiz
 */
class TERMO_X extends Producao{

    //<TERMO_X> ::= [<OP_MULT> <FATOR> <TERMO_X>]

    @Override
    public SimboloGramatical derivar() throws Exception {

        TokenReader tokenReader =  TokenReader.getInstance();

        NaoTerminal TERMO_X = new NaoTerminal("TERMO_X");

        Token t = tokenReader.seeNext();
        if(t.getTokenClass().equals(TokenClass.OPERADOR) &&
            (t.getAtributo().equals("*") || t.getAtributo().equals("/")))
        {  
                       
            TERMO_X.add(new OP_MULT().derivar());
   
           
            TERMO_X.add(new FATOR().derivar());

      
            TERMO_X.add(new TERMO_X().derivar());
        }
        
        simbolo = TERMO_X;
        return simbolo;
    }

    @Override
    public void setSimbolo() {
        super.simbolo = new NaoTerminal("TERMO_X");
    }

}
